import matplotlib.pyplot as plt
import numpy as np

from mpl_toolkits import axisartist

fig = plt.figure(layout="constrained")

axes = fig.add_subplot(111, axes_class=axisartist.Axes)

"""
创建新轴：
    nth_coord：第几个轴，0 表示 x 轴，1 表示 y 轴
    axis_direction: 可读的方向与位置
"""
axes.axis["y=0.5"] = axes.new_floating_axis(nth_coord=0, value=0.5, axis_direction="bottom")

axes.axis["y=0.5"].toggle(all=True)  # 设置新建的轴显示哪些内容（全补、轴线、刻度等）
axes.axis["y=0.5"].label.set_text("y")
axes.axis["y=0.5"].set_axisline_style("-|>")

axes.axis["x=1"] = axes.new_floating_axis(nth_coord=1, value=1, axis_direction="left")

axes.axis["x=1"].toggle(all=True)  # 设置新建的轴显示哪些内容（全补、轴线、刻度等）
axes.axis["x=1"].label.set_text("x")
axes.axis["x=1"].set_axisline_style("-|>")

# 设置原始轴线 left、bottom、right、top 不显示
axes.axis["left", "bottom", "top", "right"].set_visible(False)

# Draw some sample data.
x = np.arange(0, 2 * np.pi, 0.01)
axes.plot(x, 2 * np.sin(x))

# axes.set_ylim(-0.5, 1) 控制显示范围

plt.show()
